package br.ufmt.model;

import java.util.ArrayList;
import java.util.Date;

import br.ufmt.exception.EnderecoException;
import br.ufmt.exception.PessoaException;

public class Funcionario extends Pessoa {

	public static ArrayList<Funcionario> funcionarios = new ArrayList<Funcionario>();
	
	public Funcionario() { super(); }
	
	public Funcionario(String nome, Date dataNascimento, String cpf,
			String telefone, SexoEnum sexo) throws PessoaException {
		super(nome, dataNascimento, cpf, telefone, sexo);
	}	
	
	/**
	 * Guarda uma refer�ncia do objeto em um vetor
	 */
	public void salvar() {
		if (!funcionarios.contains(this))
			funcionarios.add(this);
	}
	
	/**
	 * Remove do vetor a refer�ncia do objeto
	 */
	public void excluir() {
		funcionarios.remove(this);
	}	
	
	/**
	 * Busca de funcion�rio pelo CPF
	 * @param cpf a ser utilizada na pesquisa
	 * @return Funcionario
	 */
	public static Funcionario getFuncionarioPorCpf(String cpf) {
		for (Funcionario f : funcionarios) {
			if (f.getCpf().equals(cpf))
				return f;
		}
		return null;
	}	
	
	static {
		try {
			Funcionario funcionario = new Funcionario("Funcionario 1", new Date(),"123.123.12-12","(65) 3214-1234",SexoEnum.MASCULINO);
			funcionario.setCidade(Cidade.getCidadePorNome("Cuiab�"));
			funcionario.setBairro("Jardim");
			funcionario.setCep("78.000-000");
			funcionario.setComplemento("Torre X, Apto Y");
			funcionario.setLogradouro("Rua Prof. Araes");
			funcionario.setNumero("13");
			funcionario.salvar();
			
			funcionario = new Funcionario("Funcionario 2", new Date(),"123.123.12-13","(65) 3214-1234",SexoEnum.FEMININO);
			funcionario.setCidade(Cidade.getCidadePorNome("Campo Grande"));
			funcionario.setBairro("Bairro");
			funcionario.setCep("78.000-000");
			funcionario.setComplemento("Torre Y, Apto X");
			funcionario.setLogradouro("Rua Qualquer");
			funcionario.setNumero("243");
			funcionario.salvar();
		} catch (PessoaException e) {
			e.printStackTrace();
		} catch (EnderecoException e) {
			e.printStackTrace();
		}			
	}	
}
